#include <iostream>
#include <string>
#include <vector>
#include <functional>

void print(const std::string& str, int num)
{
    std::cout << str << num << std::endl;
}

int main()
{
    // print("hello");

    // 这里auto利用的是包装器
    auto func = std::bind(print, "hello", std::placeholders::_1); // 第一个参数与其bind

    func(10); // 这里调用一下

    // 这个就是bind的使用,由于参数过多,这里直接使用bind来绑定参数,绑定的函数,帮定的参数
    using Task = std::function<void()>;
    std::vector<Task> arry;
    arry.push_back(std::bind(print, "hello", 10));
    arry.push_back(std::bind(print, "leihou", 20));
    arry.push_back(std::bind(print, "nihao", 30));
    arry.push_back(std::bind(print, "bitejiuyeke", 40));

    for (auto& f : arry)
        f();
    return 0;
}
